/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package DAO;

import DAO.util.ConectaBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import model.Produto;

/**
 *
 * @author Alex
 */
public class ProdutoDAO {

    public boolean criar(Produto produto) {
        try {
            Connection conexao = ConectaBanco.getConexao();

            String sql = "insert into produto(nome, preco, quantidade, status) values (?,?,?,1)";
            // seta os parametros no sql
            PreparedStatement pstmt = conexao.prepareCall(sql);

            pstmt.setString(1, produto.getNome());
            pstmt.setDouble(2, produto.getPreco());
            pstmt.setInt(3, produto.getQuantidade());

            System.out.println(sql);
            pstmt.execute();

            conexao.close();
            return true;

        } catch (SQLException sql) {

            return false;

        }
    }

    public ArrayList<Produto> buscarTodas(String nome) throws ClassNotFoundException {
        ArrayList<Produto> produtos = new ArrayList<Produto>();
        Connection conexao = null;
        try {
            conexao = ConectaBanco.getConexao();
            String sql = "select * from produto where nome ilike ? and status=1 ";


            PreparedStatement pst = conexao.prepareStatement(sql);

            pst.setString(1, nome + "%");
            ResultSet rs = pst.executeQuery();
           



            while (rs.next()) {
                Produto produto = new Produto();
                produto.setId(rs.getInt("id"));
                produto.setNome(rs.getString("nome"));
                produto.setPreco(rs.getDouble("preco"));
                produto.setQuantidade(rs.getInt("quantidade"));
                produtos.add(produto);
            }
            conexao.close();
            return produtos;

        } catch (SQLException sql) {
            return null;
        }

    }

    public Produto buscarLoginByCodigo(int codigo) throws ClassNotFoundException, SQLException {
        Connection conexao = ConectaBanco.getConexao();
        PreparedStatement sql = conexao.prepareStatement("select * from produto where id=? and status=1");
        sql.setInt(1, codigo);
        ResultSet resultado = sql.executeQuery();

        Produto produto = new Produto();
        while (resultado.next()) {
            produto.setId(resultado.getInt("id"));
            produto.setNome(resultado.getString("nome"));
            produto.setPreco(resultado.getDouble("preco"));
            produto.setQuantidade(resultado.getInt("quantidade"));

        }
        conexao.close();
        return produto;
    }

    public boolean atualizar(Produto produto) {
        try {
            Connection conexao = ConectaBanco.getConexao();

            String sql = "update produto set nome=?, preco=?, quantidade=? where id=?";

            PreparedStatement pstmt = conexao.prepareCall(sql);
            pstmt.setString(1, produto.getNome());
            pstmt.setDouble(2, produto.getPreco());
            pstmt.setInt(3, produto.getQuantidade());
            pstmt.setInt(4, produto.getId());

            
            pstmt.execute();
            System.out.println("Cadastro realizado com sucesso");
            conexao.close();
            return true;
        } catch (SQLException sql) {
            System.out.println("Erro ao atualizar registro");
           
            return false;

        }
    }

    public boolean marcarInativo(int id) {
        try {
            Connection conexao = ConectaBanco.getConexao();
            System.out.println("Id dentro do método marcar inativo "+id);
            String sql = "update produto set status=0 where id=?";

            PreparedStatement pstmt = conexao.prepareCall(sql);

            pstmt.setInt(1, id);


            pstmt.execute();

            conexao.close();
            return true;
        } catch (SQLException sql) {
        
            return false;

        }
    }
}
